Finding the unloaded geometryΒΆ
from fenics_plotly import plot
import pulse
geometry = pulse.HeartGeometry.from_file(pulse.mesh_paths["simple_ellipsoid"])
# geometry = pulse.geometries.prolate_ellipsoid_geometry(mesh_size_factor=3.0)
material = pulse.NeoHookean()
# material = pulse.Guccione()
2022-02-23 11:38:08,548 [834] INFO pulse.geometry_utils:
Load mesh from h5
# Parameter for the cardiac boundary conditions
bcs_parameters = pulse.MechanicsProblem.default_bcs_parameters()
bcs_parameters["base_spring"] = 1.0
bcs_parameters["base_bc"] = "fix_x"
# Create the problem
problem = pulse.MechanicsProblem(geometry, material, bcs_parameters=bcs_parameters)
# Suppose geometry is loaded with a pressure of 1 kPa
# and create the unloader
unloader = pulse.FixedPointUnloader(problem=problem, pressure=3.0)
2022-02-23 11:38:08,746 [834] INFO pulse.unloader:
-------------------------- Unloading options ---------------------------
Target pressure: 3.0
maxiter = 10
tolerance = 0.0001
regenerate_fibers (serial only)= False
------------------------------------------------------------------------
# Unload the geometry
unloader.unload()
2022-02-23 11:38:08,753 [834] INFO pulse.unloader: ------------------------------------------------------------------------
2022-02-23 11:38:08,755 [834] INFO pulse.unloader: ----------------------------Start unloading-----------------------------
2022-02-23 11:38:08,756 [834] INFO pulse.unloader: ------------------------------------------------------------------------
2022-02-23 11:38:09,790 [834] INFO pulse.unloader:
LV Volume of original geometry = 0.749 ml
2022-02-23 11:38:09,848 [834] INFO pulse.unloader:
Do an intial solve
2022-02-23 11:39:52,966 [834] INFO pulse.unloader:
Iteration: 0
Ignoring precision in integral metadata compiled using quadrature representation. Not implemented.
2022-02-23 11:39:59,511 [834] WARNING FFC: Ignoring precision in integral metadata compiled using quadrature representation. Not implemented.
Ignoring precision in integral metadata compiled using quadrature representation. Not implemented.
2022-02-23 11:40:07,179 [834] WARNING FFC: Ignoring precision in integral metadata compiled using quadrature representation. Not implemented.
2022-02-23 11:40:08,101 [834] INFO pulse.unloading_utils:
LV Volume of original geometry = 0.568 ml
2022-02-23 11:41:52,515 [834] INFO pulse.unloading_utils:
LV Volume of inflated geometry = 0.568 ml
2022-02-23 11:41:53,000 [834] INFO pulse.unloading_utils:
LV Volume of new reference geometry = 0.717 ml
2022-02-23 11:41:53,070 [834] INFO pulse.unloader:
Residual: 0.01132862342853834
2022-02-23 11:41:53,071 [834] INFO pulse.unloader:
Iteration: 1
2022-02-23 11:41:53,549 [834] INFO pulse.unloading_utils:
LV Volume of original geometry = 0.596 ml
2022-02-23 11:42:00,110 [834] INFO pulse.unloading_utils:
LV Volume of inflated geometry = 0.596 ml
2022-02-23 11:42:00,596 [834] INFO pulse.unloading_utils:
LV Volume of new reference geometry = 0.754 ml
2022-02-23 11:42:00,656 [834] INFO pulse.unloader:
Residual: 0.0016980102145405299
2022-02-23 11:42:00,657 [834] INFO pulse.unloader:
Iteration: 2
2022-02-23 11:42:01,143 [834] INFO pulse.unloading_utils:
LV Volume of original geometry = 0.592 ml
2022-02-23 11:42:07,554 [834] INFO pulse.unloading_utils:
LV Volume of inflated geometry = 0.592 ml
2022-02-23 11:42:08,049 [834] INFO pulse.unloading_utils:
LV Volume of new reference geometry = 0.749 ml
2022-02-23 11:42:08,117 [834] INFO pulse.unloader:
Residual: 0.0002592876931297112
2022-02-23 11:42:08,119 [834] INFO pulse.unloader:
Iteration: 3
2022-02-23 11:42:08,602 [834] INFO pulse.unloading_utils:
LV Volume of original geometry = 0.593 ml
2022-02-23 11:42:14,949 [834] INFO pulse.unloading_utils:
LV Volume of inflated geometry = 0.593 ml
2022-02-23 11:42:15,437 [834] INFO pulse.unloading_utils:
LV Volume of new reference geometry = 0.750 ml
2022-02-23 11:42:15,501 [834] INFO pulse.unloader:
Residual: 3.9313042959285734e-05
2022-02-23 11:42:15,504 [834] INFO pulse.unloader: ########################################################################
Unloading suceeding
# Get the unloaded geometry
unloaded_geometry = unloader.unloaded_geometry
fig = plot(geometry.mesh, opacity=0.0, show=False)
fig.add_plot(plot(unloaded_geometry.mesh, color="red", show=False))
fig.show()